/*
 * FSWUniCEUB - 2008
 * 
 * Este arquivo é de propriedade da Fábrica de Software do UniCEUB
 * 
 * Para mais informações entre em contato com a coordenação do
 * curso de Ciência da Computação da instituição.
 */

package br.uniceub.fsw.talentos.bo;

import br.uniceub.fsw.arquitetura.servico.exception.NegocioException;
import br.uniceub.fsw.talentos.dao.TalentoDAO;
import br.uniceub.fsw.talentos.vo.TalentoVO;

/**
 * Business Object da entidade Talento. Essa classe é responsável por todos as
 * funcionalidades de negócio relacionadas à entidade.
 * 
 * @author Bruno Schifer Bernardi 2026545/5
 * * @author Ana Carolina Percon Peixoto - 2009
 * * @author Leonardo Angelos da Costa - 2009
 */
public class TalentoBO {

    TalentoDAO talentoDAO = new TalentoDAO();
    
    /**
     * Valida se já existe um registro do Talento no Banco de Dados como verificação para inserção.
     * 
     * @param talento talento a ser verificado.
     * @throws br.uniceub.fsw.arquitetura.servico.exception.RegraNegocioException caso o Talento 
     * informado não possua nome para a verificação ou já exista um Talento com o mesmo nome no banco de dados.
     */
    public void validarVOUnico(TalentoVO talento) throws NegocioException {
        
        if(talento.getCdGrupoTrabalho() == null || talento.getCdGrupoTrabalho().toString().isEmpty())
            throw new NegocioException("Grupo de trabalho do talento não foi informado");

        if(talento.getNoTalento() == null || talento.getNoTalento().isEmpty())
            throw new NegocioException("Nome do talento não foi informado");

        if(talento.getMtRegistroUniceub() == null || talento.getMtRegistroUniceub().toString().isEmpty())
            throw new NegocioException("Matrícula do talento não foi informado");

        TalentoVO talentoExemplo = new TalentoVO();
        talentoExemplo.setNoTalento(talento.getNoTalento());
        
        if(!talentoDAO.consultarPorExemplo(talentoExemplo).isEmpty())
            throw new NegocioException("Já existe uma talento de nome " + talento.getNoTalento() +
                " na base de dados");
    }

    public void validarAlterarVOUnico(TalentoVO talento) throws NegocioException {

        if(talento.getCdGrupoTrabalho() == null)
            throw new NegocioException("Nome do talento não foi informado");

        if(talento.getNoTalento() == null || talento.getNoTalento().isEmpty())
            throw new NegocioException("Nome do talento não foi informado");


    }
}
